package cn.xawl.utils;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 * @author lh
 * @date 2020/01/19 16:43
 *
 * 解决实体管理器工厂的浪费资源问题和耗时问题
 *      通过静态代码块的形式，当程序第一次访问此工具类时，创建一个公共的实体管理器工程对象
 *
 * 第一次访问getEntityManager方法，经过静态代码块，创建一个工厂对象，再调用方法创建一个EntityManager对象
 * 第二次访问getEntityManagerFactory方法，直接通过一个已经创建好的factory对象，创建一个EntityManager对象
 *
 **/
public class JpaUtils {

    private static EntityManagerFactory factory;

    static {
        //1.加载配置文件，根据配置文件创建EntityManagerFactory
        factory = Persistence.createEntityManagerFactory("myJpa");

    }

    /**
     * 获取EntityManager对象
     */

    public static EntityManager getEntityManagerFactory(){
        return factory.createEntityManager();
    }
}
